package com.odontosis.view.impressao;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.odontosis.dto.DadosFiodDto;
import com.odontosis.entidade.ParametrosFIOD;
import com.odontosis.entidade.Procedimento;
import com.odontosis.ioc.ContainerIoc;
import com.odontosis.service.ParametrosService;
import com.odontosis.service.UsuarioService;
import com.odontosis.util.StringUtilsOdontosis;
import com.odontosis.view.OdontosisAction;

public class AcaoImpressaoFiod extends OdontosisAction<UsuarioService> {
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoFiod formulario = (FormImpressaoFiod) form;
		if(formulario.getMetodo() != null && formulario.getMetodo().equals("finalizado")){
			return onExecutar(mapping, form, request, response);
		} else if(formulario.getMetodo() != null && formulario.getMetodo().equals("falha")){
			return onFalhou(mapping, form, request, response);
		}
		return onIniciar(mapping, form, request, response);
		
	}
	
	public ActionForward onFalhou(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoFiod formulario = (FormImpressaoFiod) form;
		Collection<String> alerta = new ArrayList<String>();
		alerta.add("A FIOD não foi impressa");
		if(!StringUtilsOdontosis.isVazia(formulario.getMensagem())) {
			alerta.add(formulario.getMensagem());
		}
		request.setAttribute("sucesso", "FIOD cadastrada.");
		request.setAttribute("alerta", alerta);
		return mapping.findForward("lista");
	}
	
	public ActionForward onExecutar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoFiod formulario = (FormImpressaoFiod) form;
		
		Collection<String> sucesso = new ArrayList<String>();
		sucesso.add("FIOD cadastrada e enviada para a impressão com sucesso.");
		request.setAttribute("sucesso", sucesso);
		request.setAttribute("alerta", formulario.getMensagem());
		return mapping.findForward("lista");
	}
	
	public ActionForward onIniciar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		FormImpressaoFiod formulario = (FormImpressaoFiod) form;
		ParametrosService parametrosService = ContainerIoc.getParametrosService();
		ParametrosFIOD parametrosFIOD = parametrosService.buscarParametrosFiod();
		
		DadosFiodDto dadosFiodDto = (DadosFiodDto) request.getAttribute("dadosfiod");
		formulario.transferirParaForm(formulario, parametrosFIOD);
		
		formulario.setCartaoPaciente(dadosFiodDto.getCartaoPaciente());
		formulario.setCpfCredenciado(dadosFiodDto.getCpfCredenciado());
		formulario.setNomeCredenciado(dadosFiodDto.getNomeCredenciado());	
		formulario.setCpfSolicitante(dadosFiodDto.getCpfSolicitante());
		formulario.setCroSolicitante(dadosFiodDto.getCroSolicitante());
		formulario.setDataSolicitacao(dadosFiodDto.getDataSolicitacao());
		formulario.setMatriculaPaciente(dadosFiodDto.getMatriculaPaciente());
		formulario.setNomePaciente(dadosFiodDto.getNomePaciente());
		formulario.setNomeSolicitante(dadosFiodDto.getNomeSolicitante());
		formulario.setTratamento1(dadosFiodDto.getTratamento1());
		formulario.setTratamento2(dadosFiodDto.getTratamento2());
		formulario.setTratamento3(dadosFiodDto.getTratamento3());
		formulario.setTratamento4(dadosFiodDto.getTratamento4());
		formulario.setTratamento5(dadosFiodDto.getTratamento5());
		formulario.setTratamento6(dadosFiodDto.getTratamento6());
		formulario.setTratamento7(dadosFiodDto.getTratamento7());
		formulario.setTratamento8(dadosFiodDto.getTratamento8());
		formulario.setTratamento9(dadosFiodDto.getTratamento9());
		formulario.setTratamento10(dadosFiodDto.getTratamento10());
		formulario.setUf("MG");
		formulario.setValor1(dadosFiodDto.getValor1());
		formulario.setValor2(dadosFiodDto.getValor2());
		formulario.setValor3(dadosFiodDto.getValor3());
		formulario.setValor4(dadosFiodDto.getValor4());
		formulario.setValor5(dadosFiodDto.getValor5());
		formulario.setValor6(dadosFiodDto.getValor6());
		formulario.setValor7(dadosFiodDto.getValor7());
		formulario.setValor8(dadosFiodDto.getValor8());
		formulario.setValor9(dadosFiodDto.getValor9());
		formulario.setValor10(dadosFiodDto.getValor10());
		formulario.setValorTotal(dadosFiodDto.getValorTotal());
		formulario.setMensagem(dadosFiodDto.getMensagem());
				
		
		return mapping.getInputForward();
	}
}
